<?php

/*
 * to change this template, choose tools | templates
 * and open the template in the editor.
 */

/**
 * description of edicion_encuestas_model
 *
 * @author montecristo
 */
class edicion_encuestas_model extends ci_model {
    public function __construct() {
        parent::__construct();
        $this->load->database();
    }
      
   
    
    public function gettipopreguntas(){
        $query=$this->db->query("select * from tipopregunta");
        return $query->result_array();
        
    }
        
   public function gettiposdatos(){
        $query=$this->db->query("select * from tipodato");
        return $query->result_array();
        
   }
  
    public function  getpreguntas($seccion){
        $pfinal=array();
        $contador=0;
        $total=0;
        $text="";
              $query=$this->db->query("select pregunta.*,subseccion.encabezado as tabla from pregunta left join subseccion on pregunta.subseccion= subseccion.idsubseccion where pregunta.seccion=".$seccion." order by secuencia asc");
                $i=0; 
               foreach ($query->result() as $row)
              {  
                  $data["pregunta"]=$row; 
                  
                  $query1=$this->db->query("select * from opmultiple where idpregunta=".$row->idpregunta);
                  $data["options"]=$query1->result();            
                  $query2=$this->db->query("select * from validacion where idpregunta=".$row->idpregunta);
                  $data["validacion"]=$query2->row();  
                  
                 if($row->subseccion==null){
                  $data["footer"]=1;
                  $preguntashtml=$this->load->view("encuestas/mostrar_preguntas",$data,true);
                  $pfinal[$i]= $preguntashtml;
                  $i++;
                 }else{
                   if($contador==0){
                     $contador=1;
                     $query4=$this->db->query("select * from pregunta where subseccion=".$row->subseccion);
                     $total=$query4->num_rows();
                     $data["footer"]=0;
                     $data["inicio"]=1;
                     $data["i"]=$contador;
                     $preguntashtml=$this->load->view("encuestas/mostrar_preguntas",$data,true);                   
                   }else{
                    $contador++;  
                    $data["inicio"]=0;
                    $data["i"]=$contador;
                    if($contador==$total){
                      $data["footer"]=1;
                      $preguntashtml=$preguntashtml.$this->load->view("encuestas/mostrar_preguntas",$data,true);  
                      $pfinal[$i]= $preguntashtml;
                      $contador=0;                   
                      $i++;
                    }else{
                        $data["footer"]=0; 
                        $preguntashtml=$preguntashtml.$this->load->view("encuestas/mostrar_preguntas",$data,true);                  
                      } 
                   }
                 }                 
                                    
              }
       
        
        return $pfinal;         
    }       
   
    public function  countsections($encuesta){
        $query=$this->db->query("select * from seccion where encuesta=".$encuesta." order by idseccion desc");
        return $query->num_rows();
    }

    public function getlastsection($encuesta,$seccion){
       $query=$this->db->query("
        select seccion.* from encuesta
        inner join seccion
        on seccion.encuesta= encuesta.idencuesta
        where idencuesta=".$encuesta." order by seccion.idseccion desc");
        if($query->num_rows() > 0){
           $array=$query->result_array();
            $data["id"]=$array[$seccion]["idseccion"];
            $data["texto"]=$array[$seccion]["encabezado"];
           return $data;
        }else{
           return -1;
        }       
        
    }    
    
    public function insertsection($encuesta){
        try {
            $data = array(
            'encuesta' => $encuesta,
            'nombre' => $this->input->post("txtnombre"),
            'encabezado' => $this->input->post("txtencabezado")         
        );
            
       $this->db->insert('seccion', $data);
       return true;
        } catch (exception $exc) {
           return false;            
        }
    }
    
    public function insertpreguntaopciones($seccion,$tipo,$opciones){
        try {
           if ($this->input->post("txtrequerido")=="on"){
               $req=1;
           }else{
               $req=0;
           }
            $query=$this->db->query("update pregunta set secuencia=secuencia+1 where secuencia>=".$this->input->post("secuencia")." and seccion=".$seccion);

            $data = array(
            'seccion' => $seccion,
            'tipopregunta' => $tipo,
            'texto' => $this->input->post("txtencabezado"),
            'textoauxiliar' => $this->input->post("txtsubencabezado"),
            'numeroopmultiple' => $opciones,
            'numeroopseleccionable' => $this->input->post("txtselect"),
            'requerida' => $req,
            'secuencia' => $this->input->post("secuencia")      
        );
       $this->db->insert('pregunta', $data);
       $idp=$this->db->insert_id();
       
       for($i=1;$i<=$opciones;$i++){
          $data1 = array(
               'idpregunta' => $idp,
               'texto' => $this->input->post(("txtopc".$i)),
               'secuencia' => $i               
           );
          $this->db->insert('opmultiple', $data1);           
       }
       
       if ($this->input->post("otro")!=""){
           $data1 = array(
               'idpregunta' => $idp,
               'texto' => "otros",
               'secuencia' =>($opciones+1) ,
               'otro' => 1
           );
          $this->db->insert('opmultiple', $data1);   
           
       }
       
       
       return true;
        } catch (exception $exc) {
           return false;            
        }
        
    }
    
    public function insertpreguntatabla($seccion,$tipo, $j,$k){
        try {          
           
           if ($this->input->post("txtrequerido")=="on"){
               $req=1;
           }else{
               $req=0;
           }                  
           
           $datas = array(
               'encabezado' => $this->input->post("txtencabezado")
            );
                      
           $this->db->insert('subseccion', $datas);
           $ids=$this->db->insert_id();
          
           $query=$this->db->query("update pregunta set secuencia=secuencia+1 where secuencia>=".$this->input->post("secuencia")." and seccion=".$seccion);
                   
           for($i=1;$i<=$k;$i++){
            $data = array(
               'seccion' => $seccion,
               'subseccion' => $ids,
               'tipopregunta' => $tipo,
               'texto' => $this->input->post(("txtopc".$i)), 
               'numeroopmultiple' => ($j-1),
               'numeroopseleccionable' => $this->input->post("txtselect"),
               'requerida' => $req,
               'secuencia' => $this->input->post("secuencia")  
            );
            $this->db->insert('pregunta', $data);
            $idp=$this->db->insert_id();
            
            for($l=2;$l<=$j;$l++){
               $data1 = array(
                   'idpregunta' => $idp,
                   'texto' => $this->input->post(("txtcab".$l)),
                   'secuencia' => ($l-1)
               );
              $this->db->insert('opmultiple', $data1);                
            }
                       
             if ($this->input->post("otro")!=""){
                $data1 = array(
                    'idpregunta' => $idp,
                    'texto' => $this->input->post("otro"),
                    'secuencia' =>($j+1) ,
                    'otro' => 1
                );
              $this->db->insert('opmultiple', $data1);   
           
       }
       
            
          
            
            if ($tipo==6){                
              $this->insertvalidacion($idp);
            }            
        }
        
        if ($this->input->post("otros")!=""){
            $data = array(
                   'seccion' => $seccion,
                   'subseccion' => $ids,
                   'tipopregunta' => $tipo,
                   'texto' => "otros", 
                   'numeroopmultiple' => ($j-1),
                   'numeroopseleccionable' => $this->input->post("txtselect"),
                   'requerida' => $req,
                   'secuencia' => $this->input->post("secuencia"),
                   'otro' => 1 
                );
               $this->db->insert('pregunta', $data);
               $idp=$this->db->insert_id();
               
              for($l=2;$l<=$j;$l++){
               $data1 = array(
                   'idpregunta' => $idp,
                   'texto' => $this->input->post(("txtcab".$l)),
                   'secuencia' => ($l-1)
               );
              $this->db->insert('opmultiple', $data1);                
            }
                       
             if ($this->input->post("otro")!=""){
                $data1 = array(
                    'idpregunta' => $idp,
                    'texto' => $this->input->post("otro"),
                    'secuencia' =>($j+1) ,
                    'otro' => 1
                );
              $this->db->insert('opmultiple', $data1);   
           
             } 
              
              if ($tipo==6){                
              $this->insertvalidacion($idp);
            }  
           
           }       
                   
        
       return true;
        } catch (exception $exc) {
           return false;            
        }       
                
    }   
       
    
      public function editpreguntaabierta($id,$seccion){
        try {
             $this->eliminarpregunta($id,1,0,$seccion);
             $this->insertpreguntaabierta($seccion, 1);             
//           if ($this->input->post("txtrequerido")=="on"){
//               $req=1;
//           }else{
//               $req=0;
//           }
//                $data = array(       
//                'texto' => $this->input->post("txtencabezado"),
//                'textoauxiliar' => $this->input->post("txtsubencabezado"),                
//                'requerida' => $req,
//               );
//                
//               $this->db->where('idpregunta', $id);
//               $this->db->update('pregunta', $data);
//               
//               $this->editvalidacion($id);
               
               return true;
        } catch (exception $exc) {
           return false;            
        }
    }    
    
    public function insertpreguntaabierta($seccion,$tipo){
        try {
           if ($this->input->post("txtrequerido")=="on"){
               $req=1;
           }else{
               $req=0;
           }               
           
           $query=$this->db->query("update pregunta set secuencia=secuencia+1 where secuencia>=".$this->input->post("secuencia")." and seccion=".$seccion);
           $data = array(
                'seccion' => $seccion,
                'tipopregunta' => $tipo,
                'texto' => strtoupper($this->input->post("txtencabezado")),
                'textoauxiliar' => strtoupper($this->input->post("txtsubencabezado")),
                'numeroopmultiple' => 0,
                'numeroopseleccionable' => 0,
                'requerida' => $req,
                'secuencia' => $this->input->post("secuencia")   
               );
            $this->db->insert('pregunta', $data);
            $idp=$this->db->insert_id();
            $this->insertvalidacion($idp);
           return true;
        } catch (exception $exc) {
           return false;            
        }
    }    
    
    
    
    
    
    
   public function  insertvalidacion($idpregunta){
         $valori="";
         $valorf="";
         $mascara=$this->input->post("txtmascara");
        if($this->input->post("tipo")==2){
            $valori=$this->input->post("txtminimo");
            $valorf=$this->input->post("txtmaximo");
             $mascara=" ";
        }else if($this->input->post("tipo")==2){
            $valori=$this->input->post("txtfechaminimo");
            $valorf=$this->input->post("txtfechamaximo"); 
            $mascara=" ";
        } 
        
        $data = array(
                'idpregunta' => $idpregunta,
                'tipodato' => $this->input->post("tipo"),
                'mascara' => $mascara ,
                'valorinicial' => $valori,
                'valorfinal' => $valorf                
               );
        $this->db->insert('validacion', $data);       
   }
    
   
    public function  editvalidacion($idpregunta){
         $valori="";
         $valorf="";
        if($this->input->post("tipo")==2){
            $valori=$this->input->post("txtminimo");
            $valorf=$this->input->post("txtmaximo");
        }else if($this->input->post("tipo")==3){
            $valori=$this->input->post("txtfechaminimo");
            $valorf=$this->input->post("txtfechamaximo");            
        } 
        
        $data = array(
                'tipodato' => $this->input->post("tipo"),
                'mascara' => $this->input->post("txtmascara"),
                'valorinicial' => $valori,
                'valorfinal' => $valorf                
               );
        
         $this->db->where('idpregunta', $idpregunta);
         $this->db->update('validacion', $data);      
   }
   
   public function eliminarpregunta($id,$tipo,$subseccion,$seccion){              
       if ($tipo <= 3){
            $query=$this->db->query("select secuencia from pregunta where idpregunta=".$id);
            $result=$query->row();            
           $this->db->query("delete from pregunta where idpregunta=".$id);
           $query=$this->db->query("update pregunta set secuencia=secuencia-1 where secuencia>=".$result->secuencia." and seccion=".$seccion);
           return true; 
         }else{
           $query=$this->db->query("select secuencia from pregunta where subseccion=".$subseccion);
           $result=$query->row();              
           $this->db->query("delete from pregunta where subseccion=".$subseccion);  
           $this->db->query("delete from subseccion where idsubseccion=".$subseccion);
           $query=$this->db->query("update pregunta set secuencia=secuencia-1 where secuencia>=".$result->secuencia." and seccion=".$seccion);
           return true;
        }       
       return false;
   }   
   
   
   public function editpreguntaopciones($id,$opciones,$seccion,$tipo){
        try {
//           if ($this->input->post("txtrequerido")=="on"){
//               $req=1;
//           }else{
//               $req=0;
//           }
//            $data = array(          
//            'texto' => $this->input->post("txtencabezado"),
//            'textoauxiliar' => $this->input->post("txtsubencabezado"),
//            'numeroopmultiple' => $opciones,
//            'numeroopseleccionable' => $this->input->post("txtselect"),
//            'requerida' => $req,
//        );
//        
//        $this->db->where('idpregunta', $id);
//        $this->db->update('pregunta', $data);       
//        $this->db->query("delete from opmultiple where idpregunta=".$id);
//        
//        
//       for($i=1;$i<=$opciones;$i++){
//          $data1 = array(
//               'idpregunta' => $id,
//               'texto' => $this->input->post(("txtopc".$i)),
//               'secuencia' => $i
//           );
//          $this->db->insert('opmultiple', $data1);           
//       }//             
            $this->eliminarpregunta($id,$tipo,0,$seccion);
            $this->insertpreguntaopciones($seccion,$tipo,$opciones);
       return true;
        } catch (exception $exc) {
           return false;            
        }
        
    }
    
    
    
    public function editarpreguntatabla($id,$seccion,$tipo, $j,$k){
        try {          
           $this->eliminarpregunta(0,$tipo,$id,$seccion);
           $this->insertpreguntatabla($seccion, $tipo, $j, $k);        
                    
       return true;
        } catch (exception $exc) {
           return false;            
        }       
                
    }   
   
    
    
    public function  eliminarseccion($id){
        try {          
          $query=$this->db->query("delete from seccion  where idseccion =".$id);                    
       return true;
        } catch (exception $exc) {
           return false;            
        }       
        
    }
    
    
}


